#include <iostream>
#include <vector>
#include <string>
#include <set>
using namespace std;
int n,k;
int count=0;
vector<int> path;
vector<int> arr(25);
vector<vector<int>> ret; 
set<int> myHash;
bool IsPrime(int n)
{
	if(n<=3)
	{
		return n>1;
	}
	for(int i=2;i<n;i++)
	{
		if(n%i==0)
		return false;
	}
	return true;
}
void dfs(int pos)
{
	if(path.size()==k)
	{
		ret.push_back(path);
		return;
	}
	for(int i=pos;i<=n;i++)
	{
		path.push_back(arr[i]);
		dfs(i+1);
		path.pop_back();
	}
}
int main()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>arr[i];
	dfs(1);
	for(auto& i:ret)
	{
		int sum=0;
		for(int &j:i)
		{
			sum+=j;
		}
		if(IsPrime(sum))
		count++;
	}		
	cout<<count<<endl;
	return 0;
 } 
